昨天我們談到「站哨」與「口令」的比喻,今天要更進一步,來解釋大家最容易搞混的兩個詞:
Authentication(認證)、Authorization(授權)
這兩個詞在中文裡通常被翻譯成「認證 / 授權」,但光看字面其實很容易混淆,我自己每次看都會搞錯。
所以我們今天就用幾個例子來讓大家徹底搞懂。
假設你要進公司大樓,流程可能會長這樣:
大家還還記得昨天開場的「口令」故事嗎?
這裡的「不同身份待遇」就是 授權(Authorization)。
來看看在 Web 系統裡的對應:
/admin/deleteUser
API。ADMIN
→ 拒絕存取。在 Web 開發中,認證「驗明正身」的方法,而這個認證可以由以下形式存在:
Cookie(Session 機制)
登入後,伺服器幫你記住,之後靠 Cookie 就能認出你。
Token(憑證)
不依靠伺服器記憶,而是每次請求都帶著 Token,伺服器驗證後才放行。
JWT(JSON Web Token)
一種「自帶資訊」的 Token,裡面直接寫明使用者 ID、角色等,驗證簽名後就能判斷是否可信。
OAuth / OIDC
幫你問別人(Google、Facebook):「這個人是誰?」讓外部身份提供者處理認證。
到這裡,我們已經了解了授權跟認證的觀念,以及現今主流的在Web的認證機制。
今天的重點可以這樣總結:
這兩者常常同時出現,但務必要分清楚:
今天就到這裡了,那明天我們要來看程式上,第一個實際的驗證方式:
Basic Authentication(基本認證) —— 目前來說,最古老,卻依然存在的帳密傳輸方式。
明天我們會先談概念,之後再進入 Spring Boot Security 的實作。
感謝大家的收看,今天就分享到這裡,我們明天見!